home *** CD-ROM | disk | FTP | other *** search
/ Reverse Code Engineering RCE CD +sandman 2000 / ReverseCodeEngineeringRceCdsandman2000.iso / RCE / Ebooks / Thinking in C++ V2 / C06 / Stack3.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  2000-05-25  |  875 b   |  46 lines

  1. //: C06:Stack3.cpp {O}
  2. // From Thinking in C++, 2nd Edition
  3. // Available at http://www.BruceEckel.com
  4. // (c) Bruce Eckel 1999
  5. // Copyright notice in Copyright.txt
  6. // Constructors/destructors
  7. #include "Stack3.h"
  8. #include "../require.h"
  9. using namespace std;
  10.  
  11. Stack::Link::Link(void* dat, Link* nxt) {
  12.   data = dat;
  13.   next = nxt;
  14. }
  15.  
  16. Stack::Link::~Link() {
  17.   delete data;
  18. }
  19.  
  20. Stack::Stack() { head = 0; }
  21.  
  22. void Stack::push(void* dat) {
  23.   head = new Link(dat,head);
  24. }
  25.  
  26. void* Stack::peek() { return head->data; }
  27.  
  28. void* Stack::pop() {
  29.   if(head == 0) return 0;
  30.   void* result = head->data;
  31.   Link* oldHead = head;
  32.   head = head->next;
  33.   delete oldHead;
  34.   return result;
  35. }
  36.  
  37. Stack::~Stack() {
  38.   Link* cursor = head;
  39.   while(head) {
  40.     cursor = cursor->next;
  41.     delete head;
  42.     head = cursor;
  43.   }
  44.   head = 0; // Officially empty
  45. } ///:~
  46.